                                SparkFS
                                =======

Spark
=====
This directory contains the latest version of the Spark program.

SparkPlug
=========
This directory contains the latest version of SparkPlug. You can give copies
of SparkPlug to other people. This version will correctly read Zip and Lzh
files which contain RISC OS attributes for files. In other words it is
compatible with the Zip files that SparkFS writes.
Commercial users can put SparkPlug on their discs, to enable the
distribution of software etc. in archives, as long as it is not modified.


NFS
===
There are several problems using image files with various versions of
NFS. You can switch off Image FS support and still use SparkFS with NFS.

PC Partitions
=============
In general attempts to manipulate i.e. add/delete files to/from archives
on PC partitions will end with corrupting the archives. This is a
RISC OS 3.10 problem.


SparkFS 1.46 (6th July 2020)
============
SparkFS holds a limited number of archives in memory, the number is set with the SparkFSBuffers command
usually in !Run with a default value of 32.
When this number of archives is reached and a further archive is opened SparkFS will attempt to discard
one archive from memory. It cannot discard an archive with an open file in, so potentially the operation
can end with SparkFS (legitimately) reporting an error
In versions before 1.46 there were various bugs in this process which could end with illegal memory access
errors, system corruption, hung machine etc.
For many users of SparkFS the limit would never be reached. However the intensive archive opening as a result of
searching a hard disc for a file would easily provoke the error.
1.46 contains a new SparkFS module and a new SparkFS filer - the archive modules are identical to 1.45.

                     
SparkFS 1.45 (12th July 2018)
============
RISC OS 5.25 has subtle changes which reveal a problem - when copying files from the desktop to archives,
small ones don't get the right file type. A new version of the SparkFS module fixes this.


SparkFS 1.44 (8th February 2016)
============
A complete rebuild, all modules given 1.44 version number.
New !Run file which will reduce problems with the System folder not being present
and creating over large dynamic areas.
Zip module has the only zero page protection bug reported (so far) fixed.



SparkFS 1.43 (14th June 2015)
============
It turns out allowing directory attributes to be set in zip files in the
previous version created a bug. If you load an archive from disc which
contains a folder and then change the attributes of the folder, the header
in the zip file for the folder will be corrupted. That does not necessarily
mean you won't be able to load the zip, SparkFS does not rely on file
headers (by default it uses the zip central directory). Spark on the other
hand uses the file headers and will raise an error. The problem also does
not occur on folders whose directory contents have not been read from a zip
file on disc. So if you create an archive fill it with folders and change
folder attributes at once the zip will not be corrupt.



SparkFS 1.43 (16th September 2012)
============
This version has a new ImageFSFix module, which fixes a bug caused by the new 32 bit version
of the module which occurs on 26 bit versions of RISC OS - the Z flag is not preserved over SWIs.

!Run now correctly insists on the FPE and CallASWI modules.

File iconbar Info window is not recreated every time it is opened.


SparkFS 1.43
============
A complete rebuild, all modules given 1.43 version number. The idea is that this version
will work on ARM 7 as well as the older ARMs.

Someone pointed out to me that RISC OS 5 preserves directory time stamps
when copying, but SparkFS does not support this.

My investigation, showed that Spark and Tar files are OK, but Zip files
didn't allow directory attributes to be updated [1].

This is because originally I did not explicitly put directories in Zip 
archives - in ancient material you can see sad little notes about 
creating empty folders after you unpack the archive.

Anyway, I have attempted to fix this [2] with a new Zip module.

[1] permanently updated, only after an archive forget + reload can you 
be sure you're seeing what is in the archive.

[2] this will only work on archives where there is an actual archive 
entry for the directory.


SparkFS 1.42
============
A complete rebuild for the ARM 7 architecture - OMAP, beagle board etc.
All modules given 1.42 version number.


SparkFS 1.41b
=============

Zip archives have extendible headers for the files they contain. This
feature allows RISC OS file attributes to be added whilst the zip file can
still be understood by software on other operating systems. 

There is a bug in previous versions of the zip module. If the attributes of
a file in a zip are updated without changing the file contents - for example
if the time stamp is altered and the file header in the zip has the RISC OS
extension as well as one or more other extensions then the header will be
changed in such a way that the archive contents appear corrupt.

This situation is likely to be rare, for example if you only use SparkFS it
will not arise. However it is an error in SparkFS. Zip module 1.40 1st.
November 2007 fixes it.


SparkFS 1.41
============
            
The SparkFS front end/filer only knew about the DDC archive file type. This
meant other archive types could not be opened by applications (e.g. Pluto)
unless they were Run.

Fixed, now scan archive file types from modules.

The only other changes in this version are to the filer, and various
configuration files to which the new Zip type should have been added in
version 1.40.




SparkFS 1.40
============

Complete rebuild, all modules given version number 1.40. This version is linked with
GStubs, which means a 32 bit update to System, C library etc. is not required.

Cacheing of writes is enabled on non-image files, leading to corruption.
Fixed again. This was supposed to be fixed in 1.38.

The official file type for Zips 0xA91 is now supported. New sprites are supplied.

SparkFS$Memory can now have a value less than -0x10000, minus this is then used as
the maximum size of the SparkFS dynamic area. The previous default behaviour is
to create a dynamic area of size equal to all the memory in the machine. This is
not desirable on machines with lots of memory because address space is rapidly
exhausted. When puzzling over these words, remember address space is not the same
thing as memory.

An example;

SetEval SparkFS$Memory -(&800000)

will set a maximum dynamic area size of 8MB. This variable is set in !Run. The maximum
dynamic area size becomes the maximum amount of memory SparkFS can use. To change it
you have to use Quit FS too, change the setting (in !Run) and load SparkFS again.




SparkFS 1.39
============
Complete rebuild, all modules given version number 1.39

Everything done in 32 bit compatible mode.

It has been possible for a long time to lock the SparkFS icon bar mode by
clicking the icon bar icon with SHIFT+Adjust. This allows you to gain the
effect of e.g. CONTROL+Drag a file without pressing the CONTROL key. This
setting is now saved when SparkFS choices are saved.




SparkFS 1.38
============

Complete rebuild, all modules given version number 1.38


PackdDir module has problems with filenames greater than 32 characters long.

Fixed.


Tar and Zip modules are likely to show files in wrong directories inside
archives if the paths in the original archive start with a directory
delimiter.

Fixed.


If the SparkFS dynamic area has a high bit set address the icon bar archive
menu goes wrong.

Fixed.


Zoo module generates branch through zero error, some time after an archive is
opened.

Fixed.


There is a bug which is revealed by having too many image filetypes active.
This is not simply related to the number of archive modules active because
some share filetypes, so Spark and Zip only count as one filetype. Typical
symptom load all the archive modules and find tar files are no longer treated
as image files.

Fixed.


Cacheing of writes is enabled on non-image files, leading to corruption.

Fixed.


The strange case of slow DES encryption. 
Someone observed that when using a Kinetic card in combination with a large
SCSI hard disc, DES encryption (which only applies to Spark archives) was
very slow. Changing the sort of memory allocated for this from malloc() to
allocation from the SparkFS dynamic area resolved the problem.

Change SparkFS 1.38 does DES in its own memory.



SparkFS 1.37
============

Complete rebuild, all modules given version number 1.37

Adjusted sprites for RISC OS 4.


New Zip module *command

*ZipStrength sets how hard the Zip module will work. Strength 1 gives the
best speed and worst compression. Strength 9 gives the best compression and
worst speed. The default value as in previous versions is 9.

Syntax: *ZipStrength <1..9>


Added code to check for truncated Zip data and slightly speeded up deflation.


Fixed a new bug introduced by long filenames in 1.36. If an archive is
truncated, and some headers are loaded from it and then loading ends with an
error SparkFS will crash.


Selecting 'Deboo' after shift dragging a file to the icon bar may lead to a
crash. Fixed.


The file 'part/jpg' fails to Zip deflate and inflate correctly. 
Fixed deflation code. 
Potentially this is a very serious bug, however since it has been in every
version of the Zip module since 1993 it must be very rare.


If a file is being added to a Zip archive, and there is not enough memory
for the file to be in RAM - so it is spooled to disc as a temporary file,
and the file fails to compress, then SparkFS will raise an error "Error
reading data". Fixed.




SparkFS 1.36
============

Complete rebuild, all modules given version number 1.36 - and note 1.36
modules are not compatible with older versions and vice versa.


The maximum length of filenames has been increased to 255 characters.
Although previous versions had a fairly long maximum length, this 
was fixed in the code, and making it too long would waste memory.
The program now efficiently stores long filenames of varying length.


Its a common observation that adding large numbers of files to e.g. a Zip
archive is slower using SparkFS than it is using a dedicated command line
program. The common interpretation is that the code in SparkFS is less
efficient. In fact the problem is the way the desktop copy operation
interacts with a filing system. Whereas a command line program knows that it
is adding many files to an archive, the desktop repeatedly tells a filing
system to add one file - after each file is added SparkFS does some tidying
up, closing the archive, and it is the constant repetition of this work that
makes things slow.

An alternative approach is to wait for some time after a file is added
before closing the archive. This is a bit like the way filing systems work
on some other computer platforms, and it immediately raises the same danger,
if you manage to switch the computer off or otherwise interrupt procedings
before the archive is closed down, it may be left in an unuseable state.

So you have been warned!

The new command

        SparkFSCache <1|0>

controls if changes to archives are cached. The default setting is 0 i.e. no
cacheing which was the previous behaviour. The timeout after which the
archive is updated is provided by the *SparkFSImageTimeout command (see
below).

If you want to enable cacheing - it makes things about twice as fast - the
command is issued in the !Run file, change the value there.

If you do corrupt a Zip file using this feature, the problem is likely to be
that the central directory hasn't been added to the end of the file. If this
happens, using the *ZipUseCentralDirectory command to turn off central
directory reading, or using Spark to read the archive will probably get you
out of trouble.



Fixed bug in CPIO module - if a non-CPIO archive looked a bit like a CPIO
archive a crash could result.




SparkFS 1.35
============

Complete rebuild, all modules given version number 1.35.


Added French resources. Thanks to Jerome Mathevet.


New CPIO archive module. CPIO is a UNIX archive file format. It has many
similarities to the Tar format, the main difference is that there is no
rounding to a 512 byte block size. CPIO files have the RISC OS file type 0xABA
and SparkFS type 18. The contents of CPIO files are not compressed.


Added support for Red Hat Package Manager (RPM) files. An RPM file consists of
a header glued onto the front of a GZipped CPIO archive of files. The SparkFS
icon bar filer, will take an RPM file, strip off the header, and unGZip it.
The resulting CPIO archive will then be opened by the new CPIO archive
module (assuming you have the CPIO and Zip modules loaded).


ZipUncompress *command extended to have an optional start offset in the source
file. The new syntax is;

        *ZipUncompress <source> <destination> [source offset]





SparkFS 1.34
============

It has long been possible to shift drag a directory or application to the
SparkFS icon bar icon, and convert it directly into an archive. A new feature
in 1.34 is that you can control + shift drag a single object or a collection
of objects to the icon bar icon. The resulting save box will allow you to
directly insert all the objects into an archive and in addition to apply
single file compression and binary to text coding to the archive.

So for example the common uucoded, GZipped, Tar archive of files can be
created in a single action

Menus on the new save box allow the coding applied at each stage to be set.
The settings will be saved when SparkFS choices are saved.


Added 'archive' entry to icon bar menu. The associated sub menu shows
all the archives which SparkFS is currently aware of. By clicking
on the menu entry you can open the 'About this archive' window
for the archive (normally opened by control dragging the archive to the
SparkFS icon bar icon).

This window has some new buttons;

Forget - removes the archive from SparkFS's memory.
Open   - opens a filer window on the root of the archive
Find   - opens a filer window on the parent directory of the archive


Added two new * commands

*mount <archive name>

*dismount <archive name> | -all

These make SparkFS load the archive into and remove it from memory.


New MicroSoft Cabinet archive module. CAB files have the RISC OS file type 0xABF
and SparkFS type 17. Module only supports old MSZip data compression.


Now use MimeMap module for maping extensions to types if SparkFS code
fails. Added code to !Run to initialise MimeMap module.

Updated modules to use fast service code despatch. All modules given version
number 1.34. and new ImageFSFix 0.05.


Fixed 'Squeeze' compression bug for Spark files.


Fixed bug in rename code - appeared in 1.33.


Fixed bug in Spark module that prevents non-spark archives with
file type DDC held in Spark archives from working correctly.


Now check if image files are open for write before attempting
operations that will modify them.


Tweaked Zip module so that directory attributes are more palatable to DOS pkzip.
Now set source machine/os type to RISC OS in Zip files.


Fix bug with open file, make extent shorter, close file - results in no change
to archive contents.


Fix bug which occurs when using system sprite space and sprite is moved, now
relocate pointers correctly.



SparkFS 1.33
============

All modules given version number 1.33.

Fixed more problems with LZH module grabbing Zips.

Now use DOSMAP to get file extension to type mappings.
!SparkFS.Config.Choices can be edited to control if this feature is used.

Improved mapping of odd characters to good RISC OS ones.

Made SparkFS re-entrant. Which means it is possible to read/write the
contents of archives contained inside other archives. This feature
will only work when SparkFS is used as an image filing system, and
so does not apply to directory archives.

Removed 'table' from uucode output. This can be enabled by editing the
Choices file. Fine tuned automatic uucode naming. Part suffixes
are now only added when the split option is used. The uue suffix
is only added in the save box, and can thus be overridden.

Improved speed of loading Zips, Tars etc. which contain many files.

Added Spark/SparkPlug 2.26. Added SyncDiscs and ShrinkWrap.



SparkFS 1.32
============

All modules given version number 1.32.

All archive modules modified to prevent either a bad archive or an archive
module accessing an archive of the wrong type from expanding files whilst
cataloging. Typically one header is read, and then a jump made to the next
header - problems arise if that jump is past the end of the archive, because
archives opened in image mode are opened for update and there is no
protection against reads passing the end of the archive extending the file.


Added support for reading and writing RISC OS Tar files produced by Frank
Lancasters command line tar program. New Tar 'compression' method 'FLtar'.



SparkFS 1.31
============
Complete rebuild, all modules given version number 1.31.

Support rename on Tar archives.

Removed Implosion from Zip module - makes module smaller. Deflation is a 
better algorithm.

Fixed problem with PackdDir module. (repeated double clicks to open archive
give error).

Fixed problem were deleting a directory corrupts Zip file. This bug would
have first appeared when empty directories in Zips where supported i.e. 1.29.

Internationalised SparkFS module - *commands and errors now in Messages1
file in Resources.UK directory. SparkFS module moved to Resources.
This only works for RISC OS 3.60 and higher, for older versions, still load
SparkFS module from UK directory.

SparkFS module made RISC OS 3.XX only FS - removed RISC OS 2 code.

Added support for *configure truncate. Only important if you
attempt to create a file with a 'long' name in an archive type
which has limits on name lengths e.g. Spark files.

Observation. If *configure Truncate is Off, and you attempt to access a file
with a long filename in an image file whose file handle is closed, then you
get a 'Name not recognised' error.



SparkFS 1.30
============
Complete rebuild, all modules given version number 1.30.

Fix tar modules handling of certain sets of file names.

Fix problems with directory names with '/''s in.

Fix problem with repeatedly reading archive catalogue.

Change name in new archive window depending on type of archive being
created.



SparkFS 1.29
============
Complete rebuild with C version 5. This means it won't work on anything
older than RISC OS 3.10. A version which will work on older OS's is
available.

All modules have now been squeezed - something that would never work
reliably on RISCOS2.

The rebuild will have propagated various minor bug fixes, for example
mapping odd characters in filenames correctly.


The maximum filename length has been extended from 20 to 48 characters.


There has been a problem with image mode archives - technically it is that
SparkFS does not close these files when they are only open for read until it
flushes the archive from its buffers. Practically the problem is that
RISCOS demands discs which are long gone be reinserted - whilst the archive
file is closed. As every one agrees this is an irritation. Two new features
have been added. Firstly when a disc is dismounted all open archives on it
are closed. Secondly there is a timeout - if an image file is not used for
this period it is closed. The timemout is set with the new command;

*SparkFSImageTimeout <time in seconds>

This is used in the !Run file. A timeout of -1 disables this feature.


The RISC OS specific tags in Zip files have been fixed to agree with the rest of
the worlds interpretation of their length field.


Some people want SparkFS to handle ArcFS files with their native file type
(3FB). Now there's a fundamental snag, two image filing systems cannot
support the same file type. So if you set up SparkFS to use 3FB for ArcFS
files, you must never load a copy of ArcFS.

A new command allows this trick to be performed.

*SparkFSMapFiletype <archive type> <file type>

An example of how to use it is contained in the !Run file. The
<archivetype> numbers are given in an appendix of the SparkFS manual.
Numbers must be in C hex notation.

In fact this command may be more useful to allow different file types to be set
up for other archive types e.g. Zips.



SparkFS 1.28
============
Patched !RunImage and ImageFSFix for the Strong ARM. Added Spark/SparkPlug
2.25 again for SA compatability.


SparkFS 1.27
============
RISC PC Improvements
SparkFS$Memory can now have the value -2, when this is used, SparkFS
will create a dynamic area of its own, instead of using the system
sprite area. By default -2 is set in the !Run file if RISC OS 3.50
is present in the machine.
Memory SWI now returns maximum size of memory area in r3.



SparkFS 1.26
============
Fix the dreaded "Disc Full" when really memory has run out bug. 
Add 3D templates - thanks to John Ferguson. 
!Run file sets SparkFS$Templates to either Templates (3D) for RISC OS 3.10
or Templates2 (2D) for older OS's.
Look up the location of the sprite area properly.
Correct file name extension for gzips.


SparkFS 1.25
============
Assorted bug fixes.
ImageFSFix, handle errors correctly, fix handling of OS_GBPB 11.
LZH module, fix bug with non-compressed files.
Filer, fix problem with unknown file types in conversions.
SparkFS module, fix problem with contents of old files being mixed up
with new files when buffers exhausted. Try harder to update image files.
Make Zip module more careful about damagaed archives.


SparkFS 1.24
============
Implement GZip. GZip is an attempt to use the powerful Deflation algorithm
to replace the UNIX Compress program. However where Compress takes one
file and replaces it with a compressed file. GZip files can in general
contain other files. Usually GZip will be used like Compress, however
it also has the potential to be used as a primitive archive program.
For the time being the handling of GZip files is the same as that of
Compress files.
Since current versions of SparkFS are not re-entrant, and usually a GZip
file will contain Tar files this is reasonable.


SparkFS 1.23
============
Add SparkFSBuffers <n> command. 
This sets how many archives will be kept open. Catalogue headers now kept
in dynamically allocated space. It is used in the !Run file.
The motivation for this command, is that if there are a lot of !app.
archives the OS will keep reading the catalogue for all of them, and this
slows things a lot if the catalogues are not in memory.
Image files will now be closed when their catalogues are discarded.

New ImageFSFix module 0.01. The low bit of the private word now shows if the 
module is active. Agree with Mark Smith (ArcFS) to keep ImageFSFix modules
compatible 8-)

Allow archive/compression method names to be translated in messages file.

Fix problem with multiple desktop filer operations going on.

Fix file attributes not working.


SparkFS 1.22
============
Reprint manual and include the rest of this file in it.
Now use desktop copy for file conversions.
Fix bug with Zip implosion, when decompressed output file is buffered to
disc. 
Fix bug with PKarc files when file won't compress.
Add test archive button to archive info/password window.


SparkFS 1.21
============
Fix problem with running out of memory when adding files to archives, when
file should be sent to scrap file to create more memory.
Fix bug with rename in SparkFS directory archives.
Fix McStuffit problem with Stuffit files with bad Huffman trees.
Allow -quit on filer command line to perform Auto Quit. Useful for running
SparkFS from obey files.

SparkFS 1.20
============
Add new header and directory header support to LZH module.
Allow password template to be edited to display password as *'s

SparkFS 1.19
============

SparkFSMemory
-------------
*SparkFSMemory sets memory slot sizes.
Syntax: *SparkFSMemory <min>[K] <max>[K]

This *command can be used to set the size of the min and max memory slots
when using system sprite space for memory. One possible use is to allow
SparkFS to be set up without running the filer program. Another possibility
is to allow other programs to control the memory size automatically.


ImageFSFix
----------
This module allows applications to be stored as files, but still be used in
the normal way by double clicking. At first sight what follows will appear
esoteric, however it has important practical uses.

The ImageFSFix module tells the desktop that any image file whose name
begins with a ! is a directory. The desktop then treats the image file
as an application directory.

So suppose you create an archive file called !Fonts and copy into it,
the contents of your usual !Fonts directory, !Boot etc. Normally you
would end up with an archive on the desktop called !Fonts showing the
Spark file flash icon. Double clicking it would open a viewer on the
contents of the archive.

However with ImageFSFix loaded the archive will appear as an
application, it will show the !Fonts icon on the desktop and will run
when double clicked.

Applications can be converted to archives in the usual way by holding
down SHIFT and dragging them to the icon bar. In previous versions of
SparkFS an archive was created and the whole application copied into
the root directory. This is now only the behaviour if the archive name
does not start with a !. If it does begin with a ! the contents of the
application directory will be copied into the root of the archive.

So with ImageFSFix loaded, you can convert applications into archive
files and although the applications will be compressed and turned into
archives, from the desktop they will look and work as normal.

ImageFSFix is located inside !SparkFS.Resources and can be loaded from
the !SparkFS.!Run file by uncommenting the appropriate line.


SparkFS 1.18
============

Auto Quit
---------
There is a new button on the choices dialogue box - Auto Quit. When selected
this will make the main program terminate shortly after being run. The idea
is that you can run the main program to load modules and so on and then it
quits saving space. Obviously once Auto Quit has been selected and the
choices have been saved it is impossible to ever get back to the choices
window. To allow this, if the ALT key is held down whilst SparkFS is run,
the Auto Quit feature will not take effect.


SparkFS 1.17
============
This version has improvements to the Zip and Lzh modules.

LZH
---
The Lzh module now loads all Lzh files, before only older ones would work. 

Zip
---
The new Zip module will load and create Zip files using the new Deflation
compression algorithm. This offers better compression and unlike Implosion
does not require a scrap file, performance should therefore be better. If
you are worried about compatability with older versions of Zip, do not use
Deflation. Eventually Implosion will be removed from the Zip module to make
it smaller.

The Zip module supports a new *command.
*ZipUseCentralDirectory <1|0>
When used with a parameter of 1, this will make the Zip module use the Zip
central directory on loading Zip files. The main advantage is that this is
much quicker than scanning the distributed directory (or file headers). The
disadvantage is that the Central directory must be both present and in
agreement with the rest of the file. So using 0 for the parameter will revert
to the extended catalogue.

AutoRun
-------
The use of this has changed again. It is now intended that for each module,
an obey file can be put in AutoRun with the same name as the module. This
file will be run when the module is loaded. The obvious use is to configure
modules. For example you may have a file called Zip with
*ZipUseCentralDirectory 1
in it. Similarly the McStuffit module can be set up.
This is a crude way of providing configuration for archive modules.

ArcFS
-----
It is now possible to convert ArcFS files directly into Spark files, PKarc
files and Spark directories. As usual hold down SHIFT and drop the file on
the icon bar.



SparkFS 1.16
============
At this release some important new features have been added. SparkFS can now
be used with RISC OS 3 as an image filing system, treating archive files as
the image files. The practical effect of this is that archives become almost
identical to directories. For command line use this is a good thing, however
some desktop programs may also be more useable with simple paths.

Image support is controlled by the * command SparkFSImage <1|0> this should
be put in the SparkFS !Run file. SparkFSImage 1 will make SparkFS attempt to
register as an image filing system and SparkFSImage 0 will deregister the
image filing system.

A system variable SparkFS$Template can be defined. This should point at a
directory containing the files you want to be put in new Spark directory
archives. This can be used if you want to use a different type of sprite for
directory archives or for utilities like chkspr to be automatically included
in new archives. It is important that the directory has the same name as the
sprites in the !Sprites file that you want renaming to have the same name as
the new archive. So if the directory is called Temp, !Sprites may contain
!temp and sm!temp. All !Sprites* (e.g. 22 or 23) files will be scanned and
renamed.

SparkFS is now internationalised. The variable SparkFSRes$Dir should point
at a directory containing the resources for SparkFS. This includes the
SparkFS module.


Notes
=====
To use SparkFS, you need to have version 3.75 (or greater) of the shared  C
library in the modules subdirectory of your !System directory (usually on
applications disc 1). If this is not present, the program will fail to run
and give an error message. A copy of CLib version 3.75 is included on this
disc. To update your System resources (including the CLib module), you
should insert the disc, open a window on it and double click the Sysmerge
application and follow any instructions that are issued. This will ensure
that this program and other new programs will run correctly.

More details are given in the !Sysmerge.!Help file. To see this press the
menu button over the Sysmerge directory, and choose the Help item from the
appropriate menu.



Acknowledgements
================
John Ferguson   - program templates and general sprites.
Jason Williams  - Spark icon bar and file icon.
Dick Tanis      - Dutch translation.
Jerome Mathevet - French translation.
Alex Bar, Herbert zur Nedden, Frank Hertel, Detlef Thielsch  - German translation.
GAG             - ResFind.





(c) Copyright David Pilling June 1992.

======
If you have any comments, suggestions, bug reports or complaints or would
like further copies of this disc or details of the many other discs available
for the Archimedes, please write to;

David Pilling
P.O. Box 22,
Thornton Cleveleys,
Blackpool.
FY5 1LR.
United Kingdom.

From time to time enhanced versions of programs will appear. You can upgrade
your copy to the latest one by sending your *original disc* with *return
postage* back to the above address. Non UK users can send one International
Reply Coupon per two discs.
